package jm.data.structure.heap;

/**
 * @Description 堆接口
 * @date 2022/4/29 8:52
 */
public interface Heap<E> {

    /**
     * 元素数量
     * @return
     */
    int size();

    /**
     * 是否为空
     * @return
     */
    boolean isEmpty();

    /**
     * 清空堆
     */
    void clear();

    /**
     * 添加元素
     * @param e
     */
    void add(E e);

    /**
     * 获取堆顶元素
     * @return
     */
    E get();

    /**
     * 删除堆顶元素
     * @return
     */
    E remove();

    /**
     * 删除堆顶元素的同时插入一个新元素
     * @param e
     * @return
     */
    E replace(E e);
}
